package com.filetransfer.service;

import com.filetransfer.model.dto.FileTransferDTO;
import com.filetransfer.model.entity.FileTransfer;

import java.util.List;

/**
 * 文件传输服务接口
 */
public interface FileTransferService {
    
    /**
     * 创建文件传输记录
     *
     * @param fileTransferDTO 文件传输信息
     * @return 文件传输ID
     */
    Long createFileTransfer(FileTransferDTO fileTransferDTO);
    
    /**
     * 更新文件传输状态
     *
     * @param id 文件传输ID
     * @param status 状态
     * @return 是否成功
     */
    boolean updateStatus(Long id, Integer status);
    
    /**
     * 更新文件传输状态和接收者信息
     *
     * @param id 文件传输ID
     * @param status 状态
     * @param receiverId 接收者ID
     * @param receiverName 接收者名称
     * @return 是否成功
     */
    boolean updateStatusAndReceiver(Long id, Integer status, String receiverId, String receiverName);
    
    /**
     * 通过ID获取文件传输记录
     *
     * @param id 文件传输ID
     * @return 文件传输信息
     */
    FileTransferDTO getById(Long id);
    
    /**
     * 通过密钥获取文件传输记录
     *
     * @param transferKey 传输密钥
     * @return 文件传输信息
     */
    FileTransferDTO getByTransferKey(String transferKey);
    
    /**
     * 获取发送的文件传输记录
     *
     * @param senderId 发送者ID
     * @return 文件传输记录列表
     */
    List<FileTransferDTO> getSentFileTransfers(String senderId);
    
    /**
     * 获取接收的文件传输记录
     *
     * @param receiverId 接收者ID
     * @return 文件传输记录列表
     */
    List<FileTransferDTO> getReceivedFileTransfers(String receiverId);
    
    /**
     * 获取设备间的文件传输记录
     *
     * @param deviceId1 设备ID1
     * @param deviceId2 设备ID2
     * @return 文件传输记录列表
     */
    List<FileTransferDTO> getFileTransfersBetween(String deviceId1, String deviceId2);
    
    /**
     * 将实体转换为DTO
     *
     * @param fileTransfer 文件传输实体
     * @return 文件传输DTO
     */
    FileTransferDTO convertToDTO(FileTransfer fileTransfer);
} 